import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm';
import { Product } from './product.entity';

/**
 * 分类实体类
 * 映射到数据库categories表，存储商品分类相关信息
 */
@Entity('categories')
export class Category {

  /**
   * 分类ID
   * @type {number}
   * @primaryGeneratedColumn 自动生成
   */
  @PrimaryGeneratedColumn()
  id: number;

  /**
   * 分类名称
   * @type {string}
   * @length 2-50字符
   * @nullable false
   * @unique true
   */
  @Column({ length: 50, nullable: false, unique: true })
  name: string;

  /**
   * 分类描述
   * @type {string}
   * @nullable true
   */
  @Column({ type: 'text', nullable: true })
  description: string;

  /**
   * 商品列表
   * @type {Product[]}
   * @OneToMany 一对多关系
   */
  @OneToMany(() => Product, product => product.category)
  products: Product[];

  /**
   * 是否激活
   * @type {boolean}
   * @default true
   */
  @Column({ default: true })
  isActive: boolean;

  /**
   * 创建时间
   * @type {Date}
   * @default CURRENT_TIMESTAMP
   */
  @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
  createdAt: Date;

  /**
   * 更新时间
   * @type {Date}
   * @default CURRENT_TIMESTAMP
   * @onUpdate CURRENT_TIMESTAMP
   */
  @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP' })
  updatedAt: Date;
}